/*******************************************************************************
*
*   Copyright ©2009 Alexandru Marin
*
*   This file is part of nwave/pMRI C library.
*
*   This project started as an MSc degree project during a
*   stage at the Paris-Est university, under joint supervision of prof.
*   Bogdan Ionescu (Image Analysis and Processing Laboratory, "Politehica"
*   University of Bucharest), Caroline Chaux and Jean-Christophe Pesquet
*   (Laboratoire d'Informatique, Université Paris-Est, Institut Gaspard Monge).
*
*   nwave/pMRI C libray is free software: you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation, either version 2 of the License, or
*   (at your option) any later version.
*
*   nwave/pMRI C libray is distributed in the hope that it will be useful,
*   but WITHOUT ANY WARRANTY; without even the implied warranty of
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*   GNU General Public License for more details.
*
*   You should have received a copy of the GNU General Public License
*   along with nwave/pMRI C library.  If not, see <http://www.gnu.org/licenses/>.
*
******************************************************************************/

#ifndef DWT_CORE_H_
#define DWT_CORE_H_

#include "mri_utils.h"
#include "dwt_types.h"

/**
 * Performs the DWT described by params on the provided data described by desc.
 */
void dwt_real_decomposition(float* data, mri_matrix_descriptor_t* desc, dwt_params_t* params);

/**
 * Performs the IDWT described by params on the provided data described by desc.
 */
void dwt_real_reconstruction(float* data, mri_matrix_descriptor_t* desc, dwt_params_t* params);


/**
 * Performs the DWT described by params on the provided data described by desc.
 * The data set is expected to be of type complex float
 */
void dwt_complex_decomposition(complex float* data, mri_matrix_descriptor_t* desc, dwt_params_t* params);

/**
 * Performs the IDWT described by params on the provided data described by desc.
 * The data set is expected to be of type complex float
 */
void dwt_complex_reconstruction(complex float* data, mri_matrix_descriptor_t* desc, dwt_params_t* params);

#endif /* DWT_CORE_H_ */
